package cn.dengta.webapp.user.model;

import javax.annotation.Nullable;

import cn.dengta.common.model.ValueProxy;
import cn.dengta.common.util.Common;
import cn.dengta.context.model.*;
import lombok.Getter;

@Getter
public enum PlanetExploreType implements LabelI18nProxy<PlanetExploreType, Integer> {
	/** 金星 */
	VENUS(0, UserEnumI18nKey.VENUS),
	/** 木星 */
	JUPITER(1, UserEnumI18nKey.JUPITER),
	/** 水星 */
	MERCURY(2, UserEnumI18nKey.MERCURY),
	/** 火星 */
	MARS(3, UserEnumI18nKey.MARS),
	/** 土星 */
	SATURN(4, UserEnumI18nKey.SATURN),
	/** 天王星 */
	URANUS(5, UserEnumI18nKey.URANUS),
	/** 海王星 */
	NEPTUNE(6, UserEnumI18nKey.NEPTUNE),
	/** 开普勒星 */
	KEPLER(7, UserEnumI18nKey.KEPLER),
	//
	;

	// 定义私有变量
	public final Integer value;
	final ValueProxy<PlanetExploreType, Integer> proxy;

	// 构造函数，枚举类型只能为私有
	PlanetExploreType(Integer value, String label) {
		this.value = value;
		this.proxy = new ValueProxy<>(this, value, label);
	}

	public String defaultLabel() {
		return getLabel(Language.en);
	}

	public static final PlanetExploreType[] CACHE = values();

	public static PlanetExploreType of(@Nullable Integer value) {
		return Common.getEnum(CACHE, PlanetExploreType::getValue, value);
	}

}
